Many Web 2.0 and Software as a Service (SaaS) applications rely heavily on user-created content. This reliance drives the need for (a) efficient and reliable scaling technologies for supporting rapid data growth; and (b) better storage and retrieval technology. Much of this user-created content only requires a primary key for store and retrieve commands rather than complex querying and management functionality offered by traditional Relational Database Management Systems (RDBMS's). The excess RDBMS functionality involves expensive hardware and highly skilled personnel, typically making it unsuitable for these types of applications. In-addition, RDBMS replication capabilities are limited and typically prefer consistency over performance and availability. Despite many developments in recent years, scaling-out a relational database is still very complex.
During recent years NoSQL (Not Only SQL) database management systems (which are also referred to as non-relational databases or unstructured databases) have emerged in-order to solve these RDBMS deficiencies. NoSQL is a broad class of database management systems that can differ from classic RDBMS in some significant ways: (1) there are no inherent relations between stored objects; (2) the data stores may not require fixed table schemas; and (3) NoSQL avoids join operations and typically scales horizontally.
In-memory non-relational databases are subset of NoSQL databases, and are designed in a way that all of (or a major part of) the users' dataset is stored in RAM Memory. In memory NoSQL databases (i.e., NoSQL databases entirely served from RAM) have become popular among developers for their ability to improve application performance and reduce operational costs. Benchmarks have shown that in-memory NoSQL databases can be up to 100 times faster than HDD-based NoSQL databases and 10-20 times faster than SSD-based NoSQL databases.
The performance of in-memory NoSQL databases, however, can suffer when the databases are implemented in a distributed fashion where database data structures are spread over multiple nodes. In such implementations, the execution of complex multi-key commands, such as UNION, INTERSECT, and SORT, may require migrating objects across nodes and even blocking database operation in-order to ensure data consistency. The delays resulting from object migration and operation blocking may be especially harmful to the performance of in-memory NoSQL databases, such as Redis, that are expected to execute commands at sub-millisecond latency.
Accordingly, the need exists for systems, methods, and media for managing an in-memory NoSQL database.